草庐IT

php - 单例继承

全部标签

c# - 如何模拟静态单例?

我有很多类(class)被要求使用RhinoMocks添加一些单元测试并遇到一些问题。首先,我知道RhinoMocks不允许模拟静态成员。我正在寻找我有哪些选择(除了使用TypeMock之外)。我所拥有的类的示例类似于以下内容:classExample1:ISomeInterface{privatestaticISomeInterface_instance;privateExample1(){//setpropertiesviaprivatestaticmethods}staticExample1(){_instance=newExample1();}publicstaticISome

c# - 如何定义一个必须继承的类

如何定义一个必须继承的类?在C#中 最佳答案 您将类标记为abstract(这是VB.NET必须继承的C#模拟)。这将确保它不能被直接实例化。来自链接的MSDN文章:Theabstractmodifierindicatesthatthethingbeingmodifiedhasamissingorincompleteimplementation.Theabstractmodifiercanbeusedwithclasses,methods,properties,indexers,andevents.Usetheabstractmod

C# 泛型通配符或如何保存对未知泛型继承的引用

好的,情况是这样的。我有一个FlexCollection类,其目的是保存FlexItem的一些专业列表,因此:publicclassFlexCollectionwhereT:FlexItem,new(){publicvoidAdd(Titem){...}...}FlexItem不是泛型类本身。我想要实现的是能够保持FlexItem的字段是对包含该对象的集合的引用。不幸的是,在C#中,不可能保留对模板类的“任何”特化的引用(如在Java中)。起初我尝试使用非通用接口(interface)IFlexCollection但它实际上迫使我对每个方法执行两次,即:publicclassFlexC

c# - 继承的通用类型统一

对于这样的场景:publicinterfaceIAnimal{}publicinterfaceIGiraffe:IAnimal{}publicinterfaceIQuestionableCollection:IEnumerable{voidSomeAction();}publicinterfaceIQuestionableCollection:IQuestionableCollection,IEnumerablewhereT:IAnimal{}publicclassQuestionableCollection:IQuestionableCollectionwhereT:IAnimal{

c# - 尝试反序列化从 Exception 继承的类时 Json.net 失败

我有一个继承自Exception的类SearchError,每当我尝试从有效的json中反序列化它时,我都会得到以下异常:ISerializabletype'SearchError'doesnothaveavalidconstructor.TocorrectlyimplementISerializableaconstructorthattakesSerializationInfoandStreamingContextparametersshouldbepresent.Path'',line1,position81.我尝试实现建议的缺失构造函数,但没有帮助。这是实现建议的构造函数后的类:

c# - 具有终结器但不是 IDisposable 的单例

这是我从“CLRviaC#”、“EffectiveC#”和其他资源中对IDisposable和终结器的理解:IDisposable用于确定性地清理托管和非托管资源。负责非托管资源(例如文件句柄)的类应实现IDisposable并提供终结器以保证即使客户端代码未在实例上调用Dispose()也能清理它们。只负责托管资源的类不应该实现终结器。如果您有终结器,则必须实现IDisposable(这允许客户端代码做正确的事情并调用Dispose(),而终结器可防止在忘记时泄漏资源)。虽然我理解并同意上述所有内容的原因,但在一种情况下我认为打破这些规则是有意义的:负责非托管资源的单例类(例如提供单

c# - C# 8 默认接口(interface)实现是否允许多重继承

根据https://blogs.msdn.microsoft.com/dotnet/2018/11/12/building-c-8-0/,C#8中的一项新功能是接口(interface)的默认实现。这个新特性是否也隐含地允许多重继承?如果不是,如果我尝试以下操作,究竟会发生什么:publicinterfaceA{intFoo()=>1;}publicinterfaceB{intFoo()=>2;}publicclassC:A,B{} 最佳答案 MadsTorgersen在您链接到的博客文章中回答了您的问题:Actuallyinter

c# - 单例模式在现实世界中有哪些应用?

重复Ondesignpatterns:WhenshouldIusethesingleton?classSingleton{privatestaticSingletoninstance;privateSingleton(){}publicstaticSingletonInstance{get{if(instance==null)instance=newSingleton();returninstance;}}} 最佳答案 简单。单例做什么?它提供对对象实例的全局访问,并且它保证永远不会创建超过一个该类型的实例。因此,当您需要两者这些东

c# - 从结构继承

我想弄清楚我的代码有什么问题。我有这段代码:publicstructMyStructA{publicMyStructA(stringstr){myString=str;}publicstringmyString;}publicstructMyStructB:MyStructA{publicstringmyReversString;}我得到这个错误:Erroratcompiletime:Type'MyStructA'ininterfacelistisnotaninterface我不明白为什么?.net不像类那样实现结构? 最佳答案 结

c# - 为从 List<string> 继承的集合实现 GetEnumerator()

我正在尝试实现FilePathCollection。它的项目将是简单的文件名(没有路径-例如“image.jpg”)。通过foreach循环使用集合后,它应该返回通过与baseDirectory连接创建的完整路径。我怎样才能做到这一点?publicclassFilePathCollection:List{stringbaseDirectory;publicFilePathCollection(stringbaseDirectory){this.baseDirectory=baseDirectory;}newpublicSystem.Collections.IEnumeratorGetE